package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.CartBean;
import com.project.bean.OrderBean;

import java.time.LocalDate;
import java.util.List;

/**
 * 订单业务接口
 */
public interface IOrderService {
    /**
     * 添加订单
     * 1、根据用户id，统计该用户购物车商品的总价，然后封装到订单对象中
     * 2、添加订单信息
     * 3、查询该用户的购物车集合
     * 4、批量添加订单明细
     * 5、清空购物车
     *
     * @param order 订单对象
     */
    public void add(OrderBean order);

    /**
     * (顾客和管理员共用)
     * 分页模糊查询订单信息
     *
     * @param pageNO    页码
     * @param userId    用户id（根据用户是否非空）
     * @param status    订单状态
     * @param startDate 下单开始日期
     * @param endDate   下单结束日期
     * @return 订单分页对象
     */
    public IPage<OrderBean> cutByItem(Integer pageNO,
                                      Integer userId,
                                      String status,
                                      LocalDate startDate,
                                      LocalDate endDate);


    /**
     * 通过订单编号查询订单详情，同时查询订单明细信息，订单明细信息中，需要查询商品编号，商品名，单价
     *
     * @param orderId 订单id
     * @return订单对象
     */
    public OrderBean findByOrderId(Integer orderId);


    /**
     * 发货，将订单状态修改为发货中
     *
     * @param orderId 订单id
     */
    public void send(Integer orderId);


    /**
     * 送货员查看发货中（固定条件）的订单信息
     *
     * @return 订单集合
     */
    public List<OrderBean> findByStatus();

    /**
     * 结账，将订单状态修改为已完结
     *
     * @param orderId 订单id
     */
    public void compile(Integer orderId);


}
